﻿using System;
namespace Microsoft.Data.OData
{
    /// <summary> Enumeration of all possible states of an <see cref="T:Microsoft.Data.OData.ODataParameterReader" />. </summary>
    public enum ODataParameterReaderState
    {
        /// <summary>The reader is at the start; nothing has been read yet.</summary>
        /// <remarks>In this state the Name and Value properties of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> returns null.</remarks>
        Start,
        /// <summary>The reader read a primitive or a complex parameter.</summary>
        /// <remarks>In this state the Name property of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> returns the name of the parameter
        /// and the Value property of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> returns the value read (e.g. a primitive value, an ODataComplexValue or null).</remarks>
        Value,
        /// <summary>The reader is reading a collection parameter.</summary>
        /// <remarks>In this state the Name property of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> returns the name of the parameter
        /// and the Value property of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> returns null. The CreateCollectionReader() method on the <see cref="T:Microsoft.Data.OData.ODataParameterReader" />
        /// must be called to get the reader to read the collection value.</remarks>
        Collection,
        /// <summary>The reader has thrown an exception; nothing can be read from the reader anymore.</summary>
        /// <remarks>In this state the Name and Value properties of the <see cref="T:Microsoft.Data.OData.ODataReader" /> return null.</remarks>
        Exception,
        /// <summary>The reader has completed; nothing can be read anymore.</summary>
        /// <remarks>In this state the Name and Value properties of the <see cref="T:Microsoft.Data.OData.ODataParameterReader" /> return null.</remarks>
        Completed
    }
}
